package com.atguigu.day14.exception.e1;

import org.junit.Test;



/*
异常: 程序执行时发生的错误情况 导致程序无法继续执行
异常的体系:
    Throwable
       -- Error: 错误 我们不能处理 只能提前避免
       -- Exception: 异常 可以处理的
            -- 运行时异常: 程序执行起来才报错
            -- 编译时/检查/受检异常: 写完代码就报错
异常的抛出机制:
    自动抛出: 发生异常会产生一个异常对象 是否对异常进行了处理 如果本方法没有处理 那么就会沿着调用关系逐级向上抛出
            直到抛给jvm  终止程序 打印异常的类型  发生异常的原因  异常的抛出轨迹
    手动抛出: 如果数据不满足要求 可以手动抛出
            throw 一个异常对象;
 */
public class ExceptionTest {

    @Test
    public void test02(){

        String[] arr = {"杨幂","赵丽颖","安琪拉","妲己","范冰冰","李冰冰"};
        showInfo(arr);

    }
    public void showInfo(String[] arr){

        if(arr.length>=6){
            throw new ClassCastException("数量太多了 哥 也不开心....");
        }

        if(arr.length<=4){
            ArrayIndexOutOfBoundsException e = new ArrayIndexOutOfBoundsException("元素太少了 哥 不开心!!");
            throw e;
        }

        for (String s : arr) {
            System.out.println("s = " + s);
        }
    }




    @Test
    public void test01(){
        System.out.println("test 1");
        eat();
    }

    private void eat() {
        sleep();
        System.out.println("eat 2");
    }
    public void sleep(){
        study();
        System.out.println("sleep 3");
    }
    private void study() {
        System.out.println("study 4");
        int m = 10/0;//产生一个异常对象 ArithmeticException

    }
}
